Recently, a solid-state drive (SSD) using a nonvolatile semiconductor memory has been put into practical use. Examples of the nonvolatile memory include a flash memory. SSD includes a memory unit and a controller. The memory unit includes, for example, a NAND flash memory cell array, a page buffer, peripheral circuits such as a row decoder and a column decoder, and the like. The controller performs error correction coding (ECC) for input data transmitted from the host device, transmits the coded data to the memory unit, and decodes the data transmitted from the memory unit and transmits the decoded data to the host device. Since a write unit of the NAND flash memory is a page, the controller constitutes data for one page by assembling a plurality of the unit-size input data transmitted from the host device and transmits the data for one page to the memory unit. The controller adjusts the number of input data constituting the data for one page such that the coded data transmitted to the memory unit does not exceed the page size. The size of the coded data written to one page rarely corresponds to the page size of the NAND flash memory.
In addition, in an SSD using a multi-plane flash memory or an SSD using a multi-value flash memory, the controller adjusts the number of the input data used at one-time write such that the size of the data written to the NAND flash memory in the one-time write sequence does not exceed the total page size for write (=page size×number of pages). At this time, too, the size of the data written to the NAND flash memory in one-time write sequence rarely corresponds to the total page size for write.
The coded data transmitted from the controller to the memory unit is thus often smaller than or equal to the size of one page or a plurality of pages for write. Since an initial value of the page buffer of the memory unit is “1” or “0”, all “1” or all “0” are written to one page of the memory unit sequentially with the coded data transmitted from the controller if the size of the coded data transmitted from the controller is smaller than one page.
Since adjacent cells store the same “1” or “0” in the region of the memory unit in which all “1” or all “0” are written, the threshold value of the cells is raised based on the data of the adjacent cells by the inter-cell coupling and the threshold distribution is broadened. When the threshold distribution broadens, the memory data of “O” or “1” is read as “1” or “0” and reliability of the memory data is degraded.